#ifndef GAMEOPT_H
#define GAMEOPT_H


/******************** Game Options: *******************/
/* This Defines are for the user to change, in order to change Game Options */

#define START_LEVELS				10		//The amount of start levels that the user can change on the beginning
#define EXP_PER_LEVEL				10		//How many Exp Points for gain Level
#define PRESENT_ADD_EACH_TURN		2		//How many presets and monsters will be added each turn
#define PRESENT_ADD_GAME_START		10		//Present on the board at the beginning
#define MOSTERS_ADD_EACH_TURN		1		//How many presents are added to the board at the beginning
#define MOSTERS_ADD_GAME_START		4		//How many Monsters are on the board at the beginning

//Present and level Upgrades:
#define PERESENT_TYPE_HEALTH_I		50
#define PERESENT_TYPE_HEALTH_MAX_I	10
#define PERESENT_TYPE_MOVMENT_I		5
#define PERESENT_TYPE_MOVMENT_MAX_I	1
#define PERESENT_TYPE_POWER_I		5
#define PERESENT_TYPE_DEFENCE_I		5

#define HEALTH_INC_FOR_STAND		5		//how many health point the player gain for standing

#define MAZE_FILE		"maze.txt"
/******************************************************/
/*************Debug Definitions************************/
//#define DBG

/******************************************************/
/************Const Vars********************************/

#define MAZE_SIZE_X 50
#define MAZE_SIZE_Y 24

#define KIND_HUMAN 1
#define KIND_MONSTER 2

#define PERESENT_TYPE_HEALTH		'h'
#define PERESENT_TYPE_HEALTH_MAX	'H'

#define PERESENT_TYPE_MOVMENT		'm'
#define PERESENT_TYPE_MOVMENT_MAX	'M'

#define PERESENT_TYPE_POWER			'P'

#define PERESENT_TYPE_DEFENCE		'D'

#define MAX_PATHS 10
#define MAX_RECURSIONS 20
#define MAX_MONSTERS 200

#define PI 3.14159265


#include <conio.h>  /* needed for _kbhit and _getch */
#include <vector>
#include <stack>
#include <string>
#include <iostream>
#include <fstream>
#include <time.h>
#include <iomanip>
#include <fstream>
#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;

//*****All the Project inc******************/
#include "SaveLoad.h"
#include "Point.h"
#include "Cell.h"
#include "Maze.h"
#include "Entity.h"
#include "Human.h"
#include "Monster.h"
#include "Game.h"

//*****General Functions******************/
inline int RandomInt(const int MinVal,const int MaxVal)
{
	return MinVal + (int)(rand()%(MaxVal-MinVal));
};

char getArrowKey();			//waiting for one of the Arrqys, or Space. Return Letter for Arrows ('R'\'L'\'U'\'D') or 'S' for Space
void WaitForEnter();		//Waiting for Enter strike
bool WaitForEnterOrESC();	//return true if enter was pressed, false if ESC
unsigned char wait4key();
double Distance(const Point , const Point );

#endif